package com.uroad.jilinpda.bleactivation;

import android.text.TextUtils;


import com.uroad.lib.util.log.LogUtil;

import java.text.DecimalFormat;

public class EtcUtils {

	/**
	 * 是否是广西ETC卡
	 * 
	 * @param issueFlag
	 *            发卡方标识符
	 * @return
	 */
	public static boolean isGxEtcCard(String issueFlag) {
		if (!TextUtils.isEmpty(issueFlag)) {
			return issueFlag.startsWith("B9E3CEF745");// 广西判断为：B9E3CEF745，即使广西ETC卡
		}
		return false;
	}

	/**
	 * 是否是湖北ETC卡
	 *
	 * @param issueFlag
	 *            发卡方标识符
	 * @return
	 */
	public static boolean isHbEtcCard(String issueFlag) {
		if (!TextUtils.isEmpty(issueFlag)) {
			return issueFlag.startsWith("BAFEB1B142");// 湖北判断为：BAFEB1B142，即使湖北ETC卡
		}
		return false;
	}

	/**
	 * 是否是辽宁ETC卡
	 *
	 * @param sn
	 *
	 * @return
	 */
	public static boolean isLiaoningEtcCard(String sn) {
		if (!TextUtils.isEmpty(sn)) {
			return "2101".equals(sn);
		}
		return false;
	}

	/**
	 * 是否是辽宁ETC卡
	 *
	 * @param deviceName
	 *
	 * @return
	 */
	public static boolean isJuLiObu(String deviceName) {
		if (!TextUtils.isEmpty(deviceName)) {
			return !deviceName.startsWith("GV")&&!deviceName.startsWith("WanJi");
		}
		return false;
	}

	public static PCard parse0015Data(PCard pCard, String data) {
		if (data != null && EtcUtils.isDataOk(data) && data.length() > 80) {
			pCard.setIssueFlag(data.substring(0, 16));
			pCard.setSn(data.substring(20, 24));
			pCard.setCardNumber(data.substring(24, 40));
			pCard.setRunUpTime(data.substring(40, 48));
			pCard.setExpirationTime(data.substring(48, 56));
			pCard.setCardType(data.substring(16,18));
			pCard.setCardVersion(data.substring(18, 20));
			pCard.setUserType(data.substring(80, 82));
			pCard.setPlateColor(data.substring(82, 84));
			pCard.setCarType(data.substring(84, 86));
			try {
				// 全牌照 (汉字+字母+数字)信息，采 用 字 符 型 存 储 ， 汉 字 采 用GB2312 码，如： “京
				// ”编码为“BEA9”；牌照信息不足 12 字节，后补 0x00
				byte[] tempBytes = Util.HexStringToByteArray(data.substring(56, 80));
				byte[] plateDatas;
				for (int i = 0; i < tempBytes.length; i++) {
					byte b = tempBytes[i];
					if (tempBytes[0] != 0x00 && 0x00 == b) {//00代表补位无用数据，首字节为00，代表没有录入车牌信息
						plateDatas = new byte[i];
						System.arraycopy(tempBytes, 0, plateDatas, 0, i);
						String palte = new String(plateDatas, "GBK");
						pCard.setPlate(palte);
						break;
					}
				}
			} catch (Exception e) {
				LogUtil.e("","车牌转换出错:" + e.getMessage());
			}

			return pCard;
		}
		return null;
	}

	/** 返回十进制金额，单位分 */
	public static int getBanlance(String data) {
		if (data != null && data.length() >= 8 && EtcUtils.isDataOk(data)) {
			return Util.parseInt(data.substring(0, 8), 16, 0);
		}
		return -1;
	}

	/**
	 * 返回数据后两个字节为9000，代表数据正常
	 * 
	 * @param data
	 * @return
	 */
	public static boolean isDataOk(String data) {
		if (!TextUtils.isEmpty(data)) {
			return data.endsWith("9000");
		}
		return false;
	}
	/**
	 * 返回数据后两个字节为9000，代表数据正常
	 *
	 * @param data
	 * @return
	 */
	public static boolean isLockCard(String data) {
		if (!TextUtils.isEmpty(data)) {
			return data.endsWith("9303");
		}
		return false;
	}

	/**
	 * 除以100，分转元
	 * @param str
	 * @return
	 */
	public static String divideHundred(String str) {
		DecimalFormat df = new DecimalFormat("0.00");
		return df.format(Double.parseDouble(str) / 100.00);
	}

	/** 乘以100，元转分 
	 * 
	 * @param str
	 * @return
	 */
	public static String multiplyHundred(String str) {
		String value = (long) (Double.parseDouble(str) * 100) + "";
		return value;
	}
}
